Προσπάθω να αποθηκεύσω ένα αντικείμενο σε xml non-binary αρχείο, του οποίου η κλάση δεν έχει [Serializable] και παραδόξως αποθηκεύεται χωρίς να εμφανίσει exception! Το θέμα μου είναι ότι δεν μπορώ να χρησιμοποιήσω το [NonSerialized] για να κόψω κάποιο property από το να αποθηκευτεί στο xml. Γνωρίζει κανείς κάτι που μου διαφεύγει? Μήπως τα [Serializable] και [NonSerialized] δεν παίζουν σε non-binary serialization? Στο παρακάτω παράδειγμα είναι ενεργοποιημένο το Serializable.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| using System;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
ToSave to = new ToSave();
to.Str1 = "value1";
to.Str2 = "value2";
XmlSerializer s = new XmlSerializer(typeof(ToSave));
TextWriter w = new StreamWriter(@"c:\test.xml");
s.Serialize(w, to);
w.Close();
}
}
[Serializable]
public class ToSave
{
private string str1;
public string Str1
{ get { return str1; } set { str1 = value; } }
[NonSerialized]
private string str2;
public string Str2
{ get { return str2; } set { str2 = value; } }
}
} |
Αποτέλεσμα
<?xml version="1.0" encoding="utf-8"?>
<ToSave xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Str1>value1</Str1>
<Str2>value2</Str2>
</ToSave>